

RELEASE NOTES FOR VAX C V2.4


These notes contain information on the  following  aspects  of  VAX  C
V2.4:

      o  Functional Enhancements

      o  Known Bugs

      o  Bug Fixes

      o  Documentation Errata



     1.  FUNCTIONAL ENHANCEMENTS

         VAX C V2.4 contains two  new  include  files:   mntdef.h  and
         fscndef.h.

         In  VAX  C  V2.4,  the  generation  of  two  error  messages,
         ANACHRONISM  and  QUALNOTSTRUCT,  will  no  longer  depend on
         /STANDARD=PORTABLE being specified on the compilation.

         There is one new error message in V2.4:  MISWIDETYPE.

     2.  KNOWN BUGS

         The following list documents known bugs for VAX C V2.4:

          o  In some unidentified circumstances, using the address  of
             a  floating point constant as a function parameter causes
             the compiler to generate cvthg  instructions.   This  bug
             was found with V2.3 and is extremely rare.

          o  The compiler will currently  not  complain  if  the  code
             changes a const member of a non-const structure.

          o  The compiler will sometimes generate two  NOOBJECT  error
             messages, one before the SUMMARY message and one after.


     3.  BUG FIXES

         VAX C  V2.4  contains  numerous  bug  fixes  and  SPR  fixes.
         Details  of  changes made as a result of SPRs can be found in
         the file SYS$LIBRARY:VAXCSPR.DAT.

         The following list documents other bugs that have been  fixed
         in VAX C V2.4.

          o  In some cases, the V2.3  compiler  would  not  report  an
             error  when  it could not find an include file.  In other
             cases, if multiple modules were compiled with a single CC









                                                                Page 2


             command,   the  compiler  would  generate  bizarre  error
             messages during include file processing.  These  problems
             have been corrected.

          o  In V2.3, using  the  /ANALYSIS_DATA  qualifier  on  a  CC
             command  used to compile multiple modules would sometimes
             cause the compiler to generate a bugcheck.  This has been
             corrected.

          o  The implementation of  hexadecimal  escape  sequences  in
             character  strings  was  not  quite  correct in V2.3; the
             hexadecimal  digits  following  the  /x  were   sometimes
             printed  as  both  the  escape character and ascii chars.
             This problem has been resolved.  In addition, the  length
             of  the hexadecimal constant has been restricted to three
             characters.

          o  V2.3 would  sometimes  generate  a  bugcheck  during  the
             parser phase after generating syntax warnings.  The error
             would  occur  after  the  parser's  error-correction  had
             inserted a typdef-name.

          o  There were minor corrections  to  the  following  include
             files:  iodef, math, processes, rab, prdef, smgdef, stat,
             stdarg, stdlib, string, time, ttdef, unixio, varargs.

          o  In V2.4, the definitions of the types div_t and ldiv_t in
             stdlib.h  have  been  changed to match the documentation.
             However the routines these types are used with, ldiv  and
             div,  have  several  problems and will not work even with
             the corrected types.

          o  In V2.4, the definition of the assert macro  in  assert.h
             has   been   changed  to  call  the  abort  function,  as
             documented.

          o  In the  V2.3  VAX  C  help  file,  atof  was  erroneously
             described  as  being declared in the include file math.h.
             As of V2.3 of VAX C, atof is declared in  stdlib.h.   The
             V2.4 help file reflects this change.

          o  In the V2.3 VAX C help file  under  the  qsort  function,
             there  was  a  missing  open  parenthesis  in  the compar
             parameter.

          o  In V2.4, you can type HELP CC  RELEASE_NOTES  and  access
             the location of the VAX C release notes.


     4.  DOCUMENTATION ERRATA

         The following sections discuss documentation  errors  in  the
         VAX C Run-Time Library Reference Manual.

VAX C RUN-TIME LIBRARY REFERENCE MANUAL









                                                                Page 3


     The format flags n, p, - +, space,  and  #  are  not  documented.
     Explanations  for  each  of  these  flags  as  noted in the draft
     proposed ANSI C Standard are as follows:

     n

     A conversion specifier (like %d).  No  input  is  consumed.   The
     corresponding  argument  shall be a pointer to integer into which
     is to be written the number of characters  read  from  the  input
     stream  so  far  by  this  call  to  fscanf.   Execution  of a %n
     directive does not increment the assignment count returned at the
     completion of execution of fscanf.

     p

     A conversion specifier.  This matches  an  implementation-defined
     set  of  sequences,  which  should  be  the  same  as  the set of
     sequences that may be  produced  by  the  %p  conversion  of  the
     fprintf  function.  The corresponding argument shall be a pointer
     to a pointer to void.  The interpretation of the  input  item  is
     implementation-defined;  however,  for  any input item other than
     the value converted earlier during the  same  program  execution,
     the behavior of the %p conversion is undefined.

     -, +, space, and #

     Represent flag converters that optionally appear just  after  "%"
     and  modify  the  conversion.   "-" specifies left justification.
     "+" requests a signed conversion with  an  explicit  sign  always
     present.   "space"  requests  a space to appear before the result
     and "#" requests the result to be converted to an alternate  form
     depending upon the request of the conversion as indicated below:

     o  Adds precision so that the first digit will be zero.

     x  Prepends 0x

     e,E,f,F,g,G        Result will always contain  a  decimal  point.
     For g and G, trailing zeros will not be removed from the result.


     On page 4-14, the syntax of the fstat and stat  functions  should
     read as follows:

       int fstat (int file_desc, stat_t *buffer);

       int stat (char *file_spec, stat_t *buffer);

     The value returned by fstat and stat is an integer not void.

     On page 6-7, the syntax of the strtok  function  should  read  as
     follows:

       char *strtok (char *s1, const char s2);








                                                                Page 4


     On page 11-3, the syntax of the qsort  function  should  read  as
     follows:

       void qsort (void *base, size_t nmemb, size_t size, int
       (*compar) (const void *, const void*);

     The correct declarations for strcspn, strspn, strlen, and  memchr
     are as follows:

       size_t strcspn (const char *s1, const char *s2);

       size_t strspn (const char *s1, const char *s2);

       size_t strlen (const char *s);

       void *memchr (const void *s1, int c, size_t size);

